﻿#define _CRT_SECURE_NO_WARNINGS 1
#include<map>
using namespace std;
//typedef pair<const Key, T> value_type;
//template <class T1, class T2>
//struct pair
//{
//	typedef T1 first_type;
//	typedef T2 second_type;
//	T1 first;
//	T2 second;
//
//	pair() : first(T1()), second(T2())
//	{}
//
//	pair(const T1& a, const T2& b) : first(a), second(b)
//	{}
//
//	template<class U, class V>
//	pair(const pair<U, V>& pr) : first(pr.first), second(pr.second)
//	{}
//};
//template <class T1, class T2>
//inline pair<T1, T2> make_pair(T1 x, T2 y)
//{
//	return (pair<T1, T2>(x, y));
//}

//// empty (1) ⽆参默认构造 
//explicit map(const key_compare& comp = key_compare(),
//	const allocator_type& alloc = allocator_type());
//// range (2) 迭代器区间构造 
//template <class InputIterator>
//map(InputIterator first, InputIterator last,
//	const key_compare& comp = key_compare(),
//	const allocator_type & = allocator_type());
//// copy (3) 拷⻉构造 
//map(const map& x);
//// initializer list (5) initializer 列表构造 
//map(initializer_list<value_type> il,
//	const key_compare& comp = key_compare(),
//	const allocator_type& alloc = allocator_type());
//
//// 迭代器是⼀个双向迭代器 
//iterator->a bidirectional iterator to const value_type
//// 正向迭代器 
//iterator begin();
//iterator end();
//// 反向迭代器 
//reverse_iterator rbegin();
//reverse_iterator rend();

//Member types
//key_type->The first template parameter(Key)
//mapped_type->The second template parameter(T)
//value_type->pair<const key_type, mapped_type>
//// 单个数据插⼊，如果已经key存在则插⼊失败,key存在相等value不相等也会插⼊失败 
//pair<iterator, bool> insert(const value_type& val);
//// 列表插⼊，已经在容器中存在的值不会插⼊ 
//void insert(initializer_list<value_type> il);
//// 迭代器区间插⼊，已经在容器中存在的值不会插⼊ 
//template <class InputIterator>
//void insert(InputIterator first, InputIterator last);
//// 查找k，返回k所在的迭代器，没有找到返回end() 
//iterator find(const key_type& k);
//// 查找k，返回k的个数 
//size_type count(const key_type& k) const;
//// 删除⼀个迭代器位置的值 
//iterator erase(const_iterator position);
//// 删除k，k存在返回0，存在返回1 
//size_type erase(const key_type& k);
//// 删除⼀段迭代器区间的值 
//iterator erase(const_iterator first, const_iterator last);
//// 返回⼤于等k位置的迭代器 
//iterator lower_bound(const key_type& k);
//// 返回⼤于k位置的迭代器 
//const_iterator lower_bound(const key_type& k) const;

